Page({
  data: {
    currentDate: new Date().getTime(),
    houseLayerVisible: false,
    repairLayerVisible: false,
    dateLayerVisible: false,
    houseList: [],
    repairItem: [],
    // fileList: [
    //   { url: '/repair_pkg/static/uploads/attachment.jpg' },
    //   { url: '/repair_pkg/static/uploads/attachment.jpg' },
    // ],
    // 选择后的时间
    appointment: '',
    // 保存上传后的图片列表
    attachment: [],
  },
  // 根据 id 得到维修信息
  async getRepairDetail(id) {
    const {
      code,
      data
    } = await wx.http.get(`/repair/${id}`)
    if (code !== 10000) return wx.utils.toast()
    this.setData({
      ...data
    })
    // 修改页面标题
    wx.setNavigationBarTitle({
      title: '修改报修信息'
    })
  },
  // 当在上传组件中选择图片之后会触发的事件
  afterRead(ev) {
    const {
      file
    } = ev.detail
    // 上传图片
    this.data.attachment.push({
      id: Date.now(),
      url: file.url,
      deletable: true
    })
    this.setData({
      attachment: this.data.attachment,
    })

  },
  // 清除图片事件
  delEvent(ev) {
    console.log(ev);
    const list = this.data.attachment.filter((item, index) => index !== ev.detail.index)
    this.setData({
      attachment: list
    })
  },
  // 打开页面时要获取数据源
  onLoad({
    id
  }) {
    // 获取报修房屋的数据源
    this.getHouseList()
    // 获取维修项目的数据源
    this.getRepairItem()
    if (id) {
      // 请求维修信息
      this.getRepairDetail(id)
      this.setData({
        id
      })
    } else {
      this.setData({
        id: Date.now()
      })
    }
  },
  // 获取选中的时间
  selectDate(ev) {
    console.log(ev.detail)
    this.setData({
      appointment: wx.utils.formatDate(ev.detail),
      dateLayerVisible: false,
    })
  },
  // 获取维修项目的数据源
  getRepairItem() {
    const repairItem = wx.getStorageSync('repairitem')
    this.setData({
      repairItem
    })
  },
  // 选中维修项目中的选项时会触发
  selectRepairItem(ev) {
    const {
      id: repairItemId,
      name: repairItemName
    } = ev.detail
    this.setData({
      repairItemId,
      repairItemName
    })
  },
  // 获取报修房屋的数据源
  getHouseList() {
    let houseList = getApp().getRoom()
    if (houseList.length === 0) {
      // wx.utils.toast('对不起您没有可报修的房屋')
      return wx.showToast({
        title: '对不起您没有可报修的房屋',
        icon: 'none',
        duration: 2000,
        complete: () => {
          setTimeout(() => {
            wx.navigateBack()
          }, 2000)
        },
      })
    }
    houseList = houseList.map(item => {
      return {
        id: item.roomid,
        name: item.point + item.building + item.room
      }
    })
    console.log(houseList);
    this.setData({
      houseList
    })
  },
  // 选中房屋选项的成员时，会触发
  selectHouse(ev) {
    const {
      id: houseId,
      name: houseInfo
    } = ev.detail
    this.setData({
      houseId,
      houseInfo
    })
  },
  openHouseLayer() {
    this.setData({
      houseLayerVisible: true
    })
  },
  closeHouseLayer() {
    this.setData({
      houseLayerVisible: false
    })
  },
  openRepairLayer() {
    this.setData({
      repairLayerVisible: true
    })
  },
  closeRepairLayer() {
    this.setData({
      repairLayerVisible: false,
    })
  },
  openDateLayer() {
    this.setData({
      dateLayerVisible: true
    })
  },
  closeDateLayer() {
    this.setData({
      dateLayerVisible: false
    })
  },
  goList() {
    wx.reLaunch({
      url: '/repair_pkg/pages/list/index',
    })
  },
  // 校验房屋 id
  verifyHouse() {
    const valid = this.data.houseId !== ''
    // 验证结果提示
    if (!valid) wx.utils.toast('请选择房屋信息!')
    // 返回验证结果
    return valid
  },
  // 校验维修项目的 id
  verifyRepair() {
    const valid = this.data.repairItemId !== ''
    // 验证结果提示
    if (!valid) wx.utils.toast('请选择维修项目!')
    // 返回验证结果
    return valid
  },
  // 校验手机号
  verifyMobile() {
    // 验证手机号
    const reg = /^[1][3-8][0-9]{9}$/
    const valid = reg.test(this.data.mobile.trim())
    // 验证结果提示
    if (!valid) wx.utils.toast('请填写正确的手机号码!')
    // 返回验证结果
    return valid
  },
  // 校验日期
  verifyDate() {
    // 验证日期格式
    const reg = /^\d{4}\/\d{2}\/\d{2}$/
    const valid = reg.test(this.data.appointment)
    // 验证结果提示
    if (!valid) wx.utils.toast('请选择预约日期!')
    // 返回验证结果
    return valid
  },
  // 校验描述信息
  verifyDescription() {
    // 验证报修项目描述
    const valid = this.data.description.trim() !== ''
    // 验证结果提示
    if (!valid) wx.utils.toast('请填写问题描述!')
    // 返回验证结果
    return valid
  },
  // 提交报修
  async submitForm() {
    // 校验数据
    if (!this.verifyHouse()) return
    if (!this.verifyRepair()) return
    if (!this.verifyMobile()) return
    if (!this.verifyDate()) return
    if (!this.verifyDescription()) return
    // 将需要的数据解构出来
    const {
      id,
      houseId,
      repairItemId,
      mobile,
      appointment,
      description,
      attachment
    } = this.data
    // 提交数据
    // id = id ? id : Date.now()
    getApp().setRepaire({
      id,
      houseId,
      repairItemId,
      mobile,
      appointment,
      description,
      attachment,
    })
    wx.navigateTo({
      url: '/repair_pkg/pages/list/index'
    })
  },
})